﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DDD {
    /// <summary>
    /// エクスポート可能なプロパティのインターフェース
    /// </summary>
    /// <remarks>
    /// intやfloatなどの組み込みの数値型とこのインターフェースを継承する構造体
    /// を返すプロパティはシェーダーにエクスポート可能です。
    /// </remarks>
    /// <typeparam name="TValue">プロパティの型</typeparam>
    interface IExportable<out TValue> {

        /// <summary>
        /// コンポーネント数
        /// </summary>
        int ComponentCount { get; }

        /// <summary>
        /// コンポーネント要素にアクセスするインデクサー
        /// </summary>
        /// <param name="index">インデクサ</param>
        /// <returns>値</returns>
        TValue this[int index] { get; }
        
    }
}
